package com.reportes;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.servlet.http.HttpServletRequest;

import com.Reporte;
import com.util.Util;

import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import exceptions.InvalidArgumentException;

public class Usuarios extends Reporte {
	
	private static final String ID_GRUPO = "grupo";
	
	private String criterioSQL = " WHERE TRUE";

	@Override
	public void VerificarParametros(HttpServletRequest request)
			throws InvalidArgumentException {

		Integer id = Util.toInteger(request.getParameter(ID_GRUPO));
		if (id != null)
			criterioSQL = " AND grupo_id= "+ id;
	}

	@Override
	public Object clone() throws CloneNotSupportedException {
		Usuarios reporte = new Usuarios();
		copyAttributesTo(reporte);
		return reporte;
	}

	@Override
	protected JRDataSource executeQuery(Connection connection)
			throws SQLException {
		StringBuffer sql =
			new StringBuffer("SELECT Usuario.*, Personal.*, personal.nombre as nombre_persona, grupo.nombre as nombre_grupo")
					.append(" FROM" )
					.append(" Usuario" )
					.append(" INNER JOIN Grupo ON (usuario.grupo_id = grupo.id)")
					.append(" INNER JOIN Personal ON (usuario.personal_id = personal.id)")
					.append(criterioSQL)
					.append(" ORDER BY personal.nombre");
		Statement statement = connection.createStatement();
		ResultSet rs = statement.executeQuery(sql.toString());
		return new JRResultSetDataSource(rs);
	}

}
